home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Nordlicht Spiele
/
Nordlicht Spiele 15-09 (19xx)(Nordlicht)(DE)(PD).zip
/
Nordlicht Spiele 15-09 (19xx)(Nordlicht)(DE)(PD).adf
/
bauernskat
< prev
next >
Wrap
Text File
|
1988-12-31
|
13KB
|
423 lines
ON BREAK GOSUB BHandle : BREAK ON
RANDOMIZE TIMER
DIM Karte#(91),BackS#(91),Weg%(32),Wert%(32),c%(4),Sp1%(16),Sp2%(16),Px%(16),Py%(16)
Pu1=0 : Pu2=0 : GP1=0 : GP2=0
OPEN "r",#1,":Daten/Karten.rel",736
FIELD #1,736 AS Daten$
WINDOW 1,SPACE$(14)+"Bauern-Skat",,16,1
RESTORE Werte
FOR z=1 TO 32
READ Wert%(z)
NEXT z : RESTORE Positionen
FOR z=1 TO 16 : READ Px%(z) : NEXT z
FOR z=1 TO 16 : READ Py%(z) : NEXT z
Werte:
DATA 0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,2,2,2,2,3,3,3,3,4,4,4,4,11,11,11,11
Positionen:
DATA 10,50,90,130,10,50,90,130,10,50,90,130,10,50,90,130
DATA 0,0,0,0,50,50,50,50,110,110,110,110,160,160,160,160
GOSUB Spielerzahl
Start:
Dran=2 : Dran1=2 : GP1=0 : GP2=0
Start2:
CLS : GOSUB Kartengeben : Dran=Dran1
FOR Stich=1 TO 16
GOSUB Stiche
NEXT Stich
LOCATE 1,21 : PRINT "Spieler 1 :";Pu1
LOCATE 1,37 : PRINT GP1;
LOCATE 25,21: PRINT "Spieler 2 :";Pu2;
LOCATE 25,37 : PRINT GP2;
IF Pu1>Pu2 THEN GP1=GP1+1
IF Pu2>Pu1 THEN GP2=GP2+1
IF Pu1=Pu2 THEN
IF Dran1=1 THEN GP2=GP2+1
IF Dran1=2 THEN GP1=GP1+1
END IF
GOSUB Lach
IF Dran1=1 THEN Dran1=2 ELSE Dran1=1
FOR w=1 TO 6000 : NEXT w
CLS
GOTO Start2
Kartengeben:
FOR z=1 TO 32 : Weg%(z)=0 : NEXT z : Pu1=0 : Pu2=0
FOR z=1 TO 16 : Sp1%(z)=0 : Sp2%(2)=0 : NEXT z
LOCATE 1,21 : PRINT "Spieler 1 : ???";
LOCATE 1,37 : PRINT GP1;
LOCATE 25,21: PRINT "Spieler 2 : ???";
LOCATE 25,37 : PRINT GP2;
GOSUB DrawEnde
FOR z=1 TO 16
Nochmal1:
zu=INT(1+RND(1)*32)
IF Weg%(zu)=1 THEN Nochmal1
Sp1%(z)=zu : Weg%(zu)=1
NEXT z
FOR z=1 TO 16
Nochmal2:
zu=INT(1+RND(1)*32)
IF Weg%(zu)=1 THEN Nochmal2
Sp2%(z)=zu : Weg%(zu)=1
NEXT z
GET #1,33 : GOSUB LadeBild
FOR z=0 TO 91 : BackS#(z)=Karte#(z) : NEXT z
IF Dran1=1 THEN St=1 : En=16 : Ste=1 ELSE St=16 : En=1 : Ste=-1
FOR z=St TO En STEP Ste
IF z<=4 OR z>12 THEN PUT (Px%(z),Py%(z)),Karte#,PSET
IF z>8 AND z<=12 THEN PUT (Px%(z-4),Py%(z-4)),Karte#,PSET
IF z>4 AND z<=8 THEN PUT (Px%(z+4),Py%(z+4)),Karte#,PSET
SOUND 200,.1,255,0
NEXT z
FOR s=St TO En STEP Ste
IF s<=4 THEN GET #1,Sp1%(s)
IF s>4 AND s<=8 THEN GET #1,Sp2%(s-4)
IF s>8 AND s<=12 THEN GET #1,Sp1%(s-4)
IF s>12 THEN GET #1,Sp2%(s-8)
GOSUB LadeBild
IF s<=4 OR s>12 THEN PUT (Px%(s),Py%(s)),Karte#,PSET
IF s>8 AND s<=12 THEN PUT (Px%(s-4),Py%(s-4)),Karte#,PSET
IF s>4 AND s<=8 THEN PUT (Px%(s+4),Py%(s+4)),Karte#,PSET
IF s=4 AND Ste=1 THEN GOSUB Trumpf
IF s=13 AND Ste=-1 THEN GOSUB Trumpf
SOUND 200,.1,255,0
NEXT s
RETURN
LadeBild:
h=1
FOR z=0 TO 91
Karte#(z)=CVD(MID$(Daten$,h,h+7))
h=h+8
NEXT z
RETURN
Trumpf:
IF Dran1=1 THEN
LOCATE 2,23 : PRINT Sp1$: LOCATE 3,23 : PRINT "Was ist Trumpf?"
y1=0 : y2=45 : GOSUB Waehlen
LOCATE 2,23 : PRINT " " : LOCATE 3,23 : PRINT " "
ELSE
LOCATE 23,23 : PRINT Sp2$ : LOCATE 24,23 : PRINT "Was ist Trumpf?"
y1=160 : y2=205 : GOSUB Waehlen
LOCATE 23,23 : PRINT " " : LOCATE 24,23 : PRINT " "
END IF
RETURN
Waehlen:
test=MOUSE(0) : x=0 : y=0
WHILE MOUSE(0)=0
x=MOUSE(1) : y=MOUSE(2)
WEND
SOUND 500,1,255,3
IF y>87 AND y<111 AND x>255 AND x<313 THEN
GOSUB EndeSpiel
IF Neu=1 THEN GOTO Ehrung
END IF
IF y>y1 AND y<y2 THEN
p=INT((x-6)/40)+1
IF p<1 OR p>4 THEN Waehlen
IF y1=0 THEN Tr=Sp1%(p) ELSE Tr=Sp2%(p+4)
FOR h=1 TO 7
Tr=Tr-4 : IF Tr<1 THEN Tr=Tr+4 : GOTO Fertig1
NEXT h
Fertig1:
IF Tr=1 THEN Tr$="Karo"
IF Tr=2 THEN Tr$="Herz"
IF Tr=3 THEN Tr$="Pik"
IF Tr=4 THEN Tr$="Kreuz"
ELSE
GOTO Waehlen
END IF
LOCATE 13,2 : PRINT "Trumpf ist ";Tr$;" "
RETURN
Stiche:
IF Dran=1 THEN
LOCATE 2,23 : PRINT Sp1$ : LOCATE 3,23 : PRINT "Spielen Sie!"
y1=0 : y2=95 : GOSUB Waehl : Kart=he : GOSUB Markieren1
LOCATE 2,23 : PRINT " " : LOCATE 3,23 : PRINT " "
Falsch1:
LOCATE 23,23 : PRINT Sp2$ : LOCATE 24,23 : PRINT "Antworten Sie!"
y1=110 : y2=205 : GOSUB Waehl : GOSUB Erlaubt : IF Falsch=1 THEN GOSUB Motz : GOTO Falsch1
GOSUB Markieren2
LOCATE 23,23 : PRINT " " : LOCATE 24,23 : PRINT " "
GOSUB Gewinner
IF Ge$="Ero" THEN
Pu1=Pu1+Wert%(Sp1%(Kart))+Wert%(Sp2%(he)) : Dran=1
PUT (280,28),BackS#,PSET
END IF
IF Ge$="Ant" THEN
Pu2=Pu2+Wert%(Sp1%(Kart))+Wert%(Sp2%(he)) : Dran=2
PUT (280,130),BackS#,PSET
END IF
FOR w=1 TO 1000 : NEXT w
LINE (170,82)-(235,127),0,bf
Sp1%(Kart)=0 : Sp2%(he)=0
IF Kart<9 THEN
GET #1,Sp1%(Kart+8) : GOSUB LadeBild : SOUND 300,.1,255,0
PUT (Px%(Kart),Py%(Kart)),Karte#,PSET
END IF
IF he<9 THEN
GET #1,Sp2%(he+8) : GOSUB LadeBild : SOUND 300,.1,255,0
PUT (Px%(he+8),Py%(he+8)),Karte#,PSET
END IF
FOR w=1 TO 1000 : NEXT w
LINE (170,82)-(231,127),0,bf
ELSE
LOCATE 23,23 : PRINT Sp2$ : LOCATE 24,23 : PRINT "Spielen Sie!"
y1=110 : y2=205 : GOSUB Waehl : Kart=he : GOSUB Markieren1
LOCATE 23,23 : PRINT " " : LOCATE 24,23 : PRINT " "
Falsch2:
LOCATE 2,23 : PRINT Sp1$ : LOCATE 3,23 : PRINT "Antworten Sie!"
y1=0 : y2=95 : GOSUB Waehl : GOSUB Erlaubt : IF Falsch=1 THEN GOSUB Motz : GOTO Falsch2
GOSUB Markieren2
LOCATE 2,23 : PRINT " " : LOCATE 3,23 : PRINT " "
GOSUB Gewinner
IF Ge$="Ero" THEN
Pu2=Pu2+Wert%(Sp2%(Kart))+Wert%(Sp1%(he)) : Dran=2
PUT (280,130),BackS#,PSET
END IF
IF Ge$="Ant" THEN
Pu1=Pu1+Wert%(Sp2%(Kart))+Wert%(Sp1%(he)) : Dran=1
PUT (280,28),BackS#,PSET
END IF
FOR w=1 TO 1000 : NEXT w
LINE (170,82)-(235,127),0,bf
Sp1%(he)=0 : Sp2%(Kart)=0
IF Kart<9 THEN
GET #1,Sp2%(Kart+8) : GOSUB LadeBild : SOUND 300,.1,255,0
PUT (Px%(Kart+8),Py%(Kart+8)),Karte#,PSET
END IF
IF he<9 THEN
GET #1,Sp1%(he+8) : GOSUB LadeBild : SOUND 300,.1,255,0
PUT (Px%(he),Py%(he)),Karte#,PSET
END IF
END IF
RETURN
Gewinner:
IF y1=0 THEN Ant=Sp1%(he) : Ero=Sp2%(Kart)
IF y1>0 THEN Ant=Sp2%(he) : Ero=Sp1%(Kart)
Ant1=Ant : Ero1=Ero
FOR a=1 TO 7
Ant1=Ant1-4 : IF Ant1<1 THEN Ant1=Ant1+4 : a=8
NEXT a
FOR a=1 TO 7
Ero1=Ero1-4 : IF Ero1<1 THEN Ero1=Ero1+4 : a=8
NEXT a
IF Ero1=Ant1 AND Ant1<>Tr THEN
IF Ant>Ero THEN Ge$="Ant" ELSE Ge$="Ero"
IF (Ero>=13 AND Ero<=16) AND Ant<29 AND (Ant<17 OR Ant>20) THEN Ge$="Ero"
IF (Ant>=13 AND Ant<=16) AND Ero<29 AND (Ero<17 OR Ero>20) THEN Ge$="Ant"
IF (Ero>=17 AND Ero<=20) THEN Ge$="Ero"
IF (Ant>=17 AND Ant<=20) THEN Ge$="Ant"
RETURN
END IF
IF Ero1<>Ant1 AND Ant1<>Tr AND (Ant<17 OR Ant>20) THEN Ge$="Ero" : RETURN
IF Ero1=Tr AND Ant1<>Tr AND (Ant<17 OR Ant>20) THEN Ge$="Ero" : RETURN
IF Ero1<>Tr AND (Ero<17 OR Ero>20) AND (Ant1=Tr OR (Ant>=17 AND Ant<=20)) THEN Ge$="Ant" : RETURN
IF Ero1=Tr AND (Ero<17 OR Ero>20) AND (Ant>=17 AND Ant<=20) THEN Ge$="Ant" : RETURN
IF Ant1=Tr AND (Ant<17 OR Ant>20) AND (Ero>=17 AND Ero<=20) THEN Ge$="Ero" : RETURN
IF Ero1=Tr AND Ant1=Tr THEN
IF Ero<Ant THEN Ge$="Ant" ELSE Ge$="Ero"
IF (Ero>=13 AND Ero<=16) AND Ant<29 AND (Ant<17 OR Ant>20) THEN Ge$="Ero"
IF (Ant>=13 AND Ant<=16) AND Ero<29 AND (Ero<17 OR Ero>20) THEN Ge$="Ant"
IF (Ero>=17 AND Ero<=20) THEN Ge$="Ero"
IF (Ant>=17 AND Ant<=20) THEN Ge$="Ant"
RETURN
END IF
IF (Ero>=17 AND Ero<=20) AND Ant=Tr AND (Ant<17 OR Ant>20) THEN Ge$="Ero" : RETURN
IF (Ant>=17 AND Ant<=20) AND Ero=Tr AND (Ero<17 OR Ero>20) THEN Ge$="Ant" : RETURN
IF (Ero>=17 AND Ero<=20) AND (Ant>=17 AND Ant<=20) THEN
IF Ant>Ero THEN Ge$="Ant" ELSE Ge$="Ero"
RETURN
END IF
RETURN
Waehl:
test=MOUSE(0) : x=0 : y=0
WHILE MOUSE(0)=0
x=MOUSE(1) : y=MOUSE(2)
WEND
SOUND 600,1,255,3
IF y>87 AND y<111 AND x>255 AND x<313 THEN
GOSUB EndeSpiel
IF Neu=1 THEN GOTO Ehrung
END IF
IF y<y1 OR y>y2 THEN Waehl
IF x<6 OR x>164 THEN Waehl
IF y>(y1+47) AND y<y2 THEN r=4 ELSE r=0
p=INT((x-6)/40)+1
IF p<1 OR p>4 THEN Waehl
IF y1=0 AND Sp1%(p+r)=0 THEN
r=r+8
IF Sp1%(p+r)=0 THEN Waehl
END IF
IF y1<>0 AND Sp2%(p+r)=0 THEN
r=r+8
IF Sp2%(p+r)=0 THEN Waehl
END IF
he=p+r
RETURN
Erlaubt:
Falsch=0
IF y1=0 THEN h1=Sp2%(Kart) : h2=Sp1%(he)
IF y1>0 THEN h1=Sp1%(Kart) : h2=Sp2%(he)
j1=h1 : j2=h2
FOR l=1 TO 7
j1=j1-4 : IF j1<1 THEN j1=j1+4 : l=8
NEXT l
FOR l=1 TO 7
j2=j2-4 : IF j2<1 THEN j2=j2+4 : l=8
NEXT l
IF j1=Tr AND j2=Tr THEN RETURN
IF j1=Tr AND (h2>=17 AND h2<=20) THEN RETURN
IF (h1>=17 AND h1<=20) AND j2=Tr THEN RETURN
IF (h1>=17 AND h1<=20) AND (h2>=17 AND h2<=20) THEN RETURN
IF j1=j2 AND (h2<17 OR h2>20) AND (h1<17 OR h1>20) THEN RETURN
IF j1<>Tr AND (j2=Tr OR (h2>=17 AND h2<=20)) THEN Keinj1
IF j1<>j2 THEN Keinj1
IF (h1>=17 AND h1<=20) AND j2<>Tr AND (h2<17 OR h2>20) THEN Keinj1
IF (j1=Tr OR (h1>=17 AND h1<=20)) AND j2<>Tr THEN Keinj1
Falsch=1 : RETURN
Keinj1:
FOR l=1 TO 8
IF y1=0 THEN k=Sp1%(l) : IF k=0 THEN k=Sp1%(l+8)
IF y1>0 THEN k=Sp2%(l) : IF k=0 THEN k=Sp2%(l+8)
ki=k
FOR kl=1 TO 7
k=k-4 : IF k<1 THEN k=k+4 : kl=8
NEXT kl
IF h1>=17 AND h1<=20 THEN
IF k=Tr OR (ki>=17 AND ki<=20) THEN Falsch=1 : RETURN
GOTO Ueberspr
END IF
IF j1=Tr THEN
IF k=Tr OR (ki>=17 AND ki<=20) THEN Falsch=1 : RETURN
GOTO Ueberspr
END IF
IF j1=k AND (ki<17 OR ki>20) THEN Falsch=1 : RETURN
Ueberspr:
NEXT l
RETURN
Markieren1:
IF y1=0 THEN y=0 : GET #1,Sp1%(Kart) ELSE y=110 : GET #1,Sp2%(Kart)
GOSUB LadeBild
Po=Kart : SOUND 300,.1,255,0 : PUT (170,82),Karte#,PSET
GOTO Spare
RETURN
Markieren2:
IF y1=0 THEN y=0 : GET #1,Sp1%(he) ELSE y=110 : GET #1,Sp2%(he)
GOSUB LadeBild : Po=he : SOUND 300,.1,255,0 : PUT (203,82),Karte#,PSET
Spare:
IF Po>8 THEN Po=Po-8
IF y1=0 THEN PUT (Px%(Po),Py%(Po)),Karte#,XOR
IF y1>0 THEN PUT (Px%(Po+8),Py%(Po+8)),Karte#,XOR
IF y1=0 AND he<9 THEN PUT (Px%(Po),Py%(Po)),BackS#,PSET
IF y1>0 AND he<9 THEN PUT (Px%(Po+8),Py%(Po+8)),BackS#,PSET
RETURN
Spielerzahl:
CLS : LOCATE 3,3 : PRINT "Hallo Spieler 1, Ihren Namen bitte :"
LOCATE 5,5 : PRINT "(10 Buchst.)"; : INPUT Sp1$
IF LEN(Sp1$)>10 THEN Sp1$=LEFT$(Sp1$,10)
LOCATE 10,3 : PRINT "Nun zu Spieler 2, Ihren Namen bitte : "
LOCATE 12,5 : PRINT "(10 Buchst.)"; : INPUT Sp2$
IF LEN(Sp2$)>10 THEN Sp2$=LEFT$(Sp2$,10)
RETURN
Motz:
SOUND WAIT
SOUND 300,3,255,0 : SOUND 300,4,0,0 : SOUND 200,3,255,0
SOUND RESUME
RETURN
Lach:
FOR s=150 TO 700 STEP 50
SOUND s,2,255,1
NEXT s
RETURN
Load3:
RETURN
DrawEnde:
LINE (255,87)-(303,111),6,b : LOCATE 13,34 : PRINT "ENDE";
RETURN
EndeSpiel:
Neu=0 : WINDOW 2,SPACE$(16)+"Ende?",(0,0)-(300,180),0,1
WINDOW 2 : SOUND 700,18,255,2
LOCATE 10,8 : PRINT "Weiter im Programm?"
LOCATE 15,12 : PRINT "Programm beenden?"
LINE (47,63)-(215,87),12,b
LINE (79,103)-(231,127),12,b
Falsch3:
test=MOUSE(0) : xx=0 : yy=0
WHILE MOUSE(0)=0
xx=MOUSE(1) : yy=MOUSE(2)
WEND
IF xx>47 AND xx<215 AND yy>63 AND yy<87 THEN WINDOW CLOSE 2 : RETURN
IF xx>79 AND xx<231 AND yy>103 AND yy<127 THEN WINDOW CLOSE 2 : Neu=1 : RETURN
GOTO Falsch3
Ehrung:
IF GP1=0 AND GP2=0 THEN LIBRARY CLOSE : SCREEN CLOSE 1 : END
CLS : GOSUB Load3 : LOCATE 2,14 : PRINT "Sieger ist"
PALETTE 6,0,0,0 : PALETTE 7,0,0,0 : PALETTE 8,0,0,0
FOR w=1 TO 2000 : NEXT w
LINE (140,120)-(159,160),6,bf : LINE (161,140)-(180,160),6,bf
LINE (141,119)-(149,111),7 : LINE -(168,111),7 : LINE -(160,119),7
LINE -(141,119),7 : PAINT (150,115),7,7
LINE (161,140)-(170,131),7 : LINE -(189,131),7 : LINE -(180,140),7
LINE -(161,140),7 : PAINT (171,135),7,7
LINE (168,112)-(168,132),8 : LINE -(160,140),8 : LINE -(160,120),8
LINE -(168,112),8 : PAINT (165,120),8,8
LINE (189,132)-(189,151),8 : LINE -(181,159),8 : LINE -(181,140),8
LINE -(189,132),8 : PAINT (185,145),8,8 : LINE (160,140)-(160,160),8
PALETTE 6,15/16,15/16,15/16 : PALETTE 7,13/16,13/16,13/16 : PALETTE 8,5/16,5/16,5/16
COLOR 1,6 : LOCATE 17,19 : PRINT "1"; : LOCATE 19,22 : PRINT "2"; : COLOR 1,0
FOR w=1 TO 3000 : NEXT w
IF GP1>GP2 THEN
LOCATE 14,20-LEN(Sp1$) : PRINT Sp1$;
LOCATE 16,23 : PRINT Sp2$;
ELSEIF GP2>GP1 THEN
LOCATE 14,20-LEN(Sp2$) : PRINT Sp2$;
LOCATE 16,23 : PRINT Sp1$;
END IF
IF GP1=GP2 THEN
LOCATE 14,20-LEN(Sp1$) : PRINT Sp1$;
LOCATE 13,20-LEN(Sp2$) : PRINT Sp2$;
END IF
FOR w=1 TO 4000 : NEXT w
LOCATE 22,7 : PRINT "Doch dabei sein ist alles!";
FOR w=1 TO 3000 : NEXT w
LOCATE 16,23 : PRINT " ";
FOR z=0 TO 20
LINE (161,140-z)-(170,131-z),7 : LINE -(189,131-z),7 : LINE -(180,140-z),8
LINE -(161,140-z),6 : PSET (160,140-z),8 : FOR w=1 TO 50 : NEXT w
NEXT z
IF GP1>GP2 THEN
LOCATE 14,23
PRINT Sp2$;
END IF
IF GP2>GP1 THEN LOCATE 14,23 : PRINT Sp1$;
LOCATE 24,3 : PRINT "Bitte linke Maustaste betätigen!";
test=MOUSE(0) : WHILE MOUSE(0)=0 : WEND
LIBRARY CLOSE : SCREEN CLOSE 1
END
BHandle:
WINDOW 2,"Zum beenden bitte <Ende> benutzen!",(20,100)-(300,107),0,1
LOCATE 1,16 : PRINT "OK?";
test=0
WHILE MOUSE(0)=0 : WEND
WINDOW CLOSE 2
RETURN